class Student:
    # 类属性，所有学生共享的属性
    school = "海经贸"

    # 实例属性，每个学生对象独有的属性
    def __init__(self, name, gender, age, classroom):
        self.name = name
        self.gender = gender
        self.age = age
        self.classroom = classroom

    def describe(self):
        # 实例方法，需要访问实例属性
        print(f"姓名: {self.name}")
        print(f"性别: {self.gender}")
        print(f"年龄: {self.age}")
        print(f"班级: {self.classroom}")
        print(f"学校: {Student.school}")

    @staticmethod
    def is_of_age(age):
        # 静态方法，不需要访问类属性或实例属性
        return age >= 18

    @classmethod
    def from_json(cls, json_dict):
        # 类方法，需要访问类本身
        name = json_dict.get('name')
        gender = json_dict.get('gender')
        age = json_dict.get('age')
        classroom = json_dict.get('classroom')
        return cls(name, gender, age, classroom)

# 使用示例
# 创建一个学生对象
student1 = Student("张三", "男", 20, "高一(1)班")

# 调用实例方法打印学生信息
student1.describe()

# 调用静态方法判断是否成年
is_adult = Student.is_of_age(student1.age)
print(f"学生是否成年: {is_adult}")

# 调用类方法从JSON创建学生对象
student_json = {
    'name': '李四',
    'gender': '女',
    'age': 17,
    'classroom': '高二(3)班'
}
student2 = Student.from_json(student_json)
student2.describe()

# 调用静态方法判断是否成年
is_adult = Student.is_of_age(student2.age)
print(f"学生是否成年: {is_adult}")